/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sueca2011;

import java.util.Iterator;

/**
 *
 * @author hugo
 */
public class Nivel1 extends Nivel0{
    
    

    public Nivel1(String nome){
        super(nome,10);
    }

    protected Carta getMelhorCarta(){
        Iterator<Carta> it = getCartasValidas().iterator();
        Carta tmp=null;
        Carta carta=null;
        while(it.hasNext()){
            tmp = it.next();
            if(carta==null || (tmp.compareTo(trunfo.getNipe(), mesaRodada[0].getCartaJogada().getNipe(), carta)>0))
                carta = tmp;
        }
        return carta;
    }

    protected Carta getPiorCarta(){
        Iterator<Carta> it = getCartasValidas().iterator();
        Carta tmp=null;
        Carta carta=null;
        while(it.hasNext()){
            tmp = it.next();
            if(carta==null || (tmp.compareTo(trunfo.getNipe(), mesaRodada[0].getCartaJogada().getNipe(), carta)<0))
                carta = tmp;
        }
        return carta;
    }


    protected Carta getCartaMaiorValor(){
        Iterator<Carta> it = getCartasValidas().iterator();
        Carta tmp=null;
        Carta carta=null;
        while(it.hasNext()){
            tmp = it.next();
            if(carta==null || Jogo.valorCarta(tmp)>Jogo.valorCarta(carta)){
                carta = tmp;
            }
        }
        return carta;
    }

    protected Carta getCartaMenorValor(){
        Iterator<Carta> it = getCartasValidas().iterator();
        Carta tmp=null;
        Carta carta=null;
        while(it.hasNext()){
            tmp = it.next();
            if(carta==null || Jogo.valorCarta(tmp)<Jogo.valorCarta(carta))
                carta = tmp;
        }
        return carta;
    }

    protected synchronized void escolheJogada() {
        Carta carta=null;

        switch(posRodada){
            case 0:
                System.out.println("IA(1) caso 0");
                carta = getCartaMaiorValor();
                break;
            case 1:
                System.out.println("IA(1) caso 1");
                carta = getMelhorCarta();
                if(comparaCartas(carta,mesaRodada[0].getCartaJogada())<0)
                    carta = getCartaMenorValor();
                break;
            case 2:
                System.out.println("IA(1) caso 2 ("+mesaRodada[0].getCartaJogada()+">"+mesaRodada[1].getCartaJogada()+"):");
                if(comparaCartas(mesaRodada[0].getCartaJogada(), mesaRodada[1].getCartaJogada())>0){
                    carta  = getCartaMaiorValor();
                }else{
                    carta = getMelhorCarta();
                    if(comparaCartas(carta,mesaRodada[1].getCartaJogada())<0)
                        carta = getCartaMenorValor();
                }
                break;
            case 3:
                System.out.println("IA(1) caso 3");
                if(comparaCartas(mesaRodada[1].getCartaJogada(), mesaRodada[0].getCartaJogada())>0 && comparaCartas(mesaRodada[1].getCartaJogada(), mesaRodada[2].getCartaJogada())>0){
                    carta  = getCartaMaiorValor();
                }else{
                    carta = getMelhorCarta();
                    if(comparaCartas(carta,mesaRodada[0].getCartaJogada())<0 || comparaCartas(carta,mesaRodada[2].getCartaJogada())<0)
                        carta = getCartaMenorValor();
                }
                break;
        }
        if(carta==null){
            System.out.println("IA(1) nao conseguiu escolher uma jogada, irá escolher aleatoria!");
            super.escolheJogada();
        }else{
            this.jogadaAtual = new Jogada(this, carta);
            System.out.println("Carta escolhida pelo nivel 1: "+this.jogadaAtual.getCartaJogada());
        }
    }

}
